package testPackage;

import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

import java.util.Set;

/**
 * step by step 01
 * 了解WebDriver driver = new ChromeDriver();
 * 要了解的问题：
 * 1、直接实例化特定的浏览器驱动器是否可行？如ChromeDriver driver = new ChromeDriver();
 * 2、创建WebDriver类型引用变量的好处？
 * 知识点：
 * 1、WebDriver -WebDriver是每个特定浏览器的实现都必须遵循的约定，WebDriver 接口提供了
 * get(), navigate(), close(), sendKeys()等方法，浏览器的驱动程序开发人员实现这些方法。
 * 以使这些东西自动化。
 * 2、WebDriver driver = new WebDriver();这是错误的，WebDriver是一个接口，在Java中我们无法
 * 实例化一个接口。
 * 3、ChromeDriver driver = new ChromeDriver();这是正确的，启动谷歌浏览器
 * 4、创建WebDriver类型引用变量的好处？
 * 具有类型为WebDriver的引用变量可以是我们将驱动程序对象分配给不同浏览器特定的驱动程序，因此
 * 可将驱动对象分配给任何所需的浏览器，进行多浏览器测试。
 * step by step 02 在Selenium WebDriver中处理Cookie
 * 1、cookie -是存储在本地计算机中的文件，其中包含用户访问网站提交的信息。该信息存储在键值对
 * 中，并允许特定网站根据用户自定义其内容。
 * 2、需要处理cookie的情况：
 * 1）存在特定于cookie的场景，这些场景需要自动执行，并且需要验证cokie文件中的条目
 * 2）在自动化过程中创建和加载cookie文件，则可以跳过某些情况
 * 3、Selenium WebDriver中获取cookies的两种方式：
 * 1）getCookieName(String cookieName) -通过名称获取特定的cookie
 * 2）getCookies() -获取当前域中所有的cookies
 */
public class SeleniumOther01 {
    @Test
    public void cookiesTest(){
        String str = "D:\\\\Enviroments\\\\geckodriver-v0.26.0-win64\\\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver",str);
        WebDriver driver = new ChromeDriver();
        driver.get("https://tb.alicdn.com/snapshot/index.html");
        //获取cookies(两种方法)
        //第一种
        // System.out.println(driver.manage().getCookieNamed("isgCookie").getValue());
        //第二种
        Set<Cookie> cookiesForCurrentURL = driver.manage().getCookies();
        for (Cookie cookie:cookiesForCurrentURL) {
            System.out.println("Cookie Name -"+cookie.getName()+"Cookie Value -"+cookie.getValue());
        }
        //添加cookie
        /*
        Cookie cookie = new Cookie("cookieName","cookieValue");
        driver.manage().addCookie(cookie);
        */
        //删除cookie（三种方法）
        //driver.manage().deleteCookieNamed(cookieName);   -按名称删除
        //driver.manage().deleteCookie(cookie); -删除特定的cookie
        //driver.manage().deleteAllCookies(); -删除所有的cookies

    }
}
